From 5b580c53338b5e46ee26a248f195708d5ede5964 Mon Sep 17 00:00:00 2001 From: "adsharma@los-vmm.sc.intel.com" Date: Mon, 22 Aug 2005 11:04:05 -0700 Subject: [PATCH] Remove the redundant call to vmx_intr_assit when we do a domain switch. Signed-off-by: Eddie Dong Signed-off-by: Edwin Zhai Signed-off-by: Arun Sharma --- xen/arch/x86/vmx.c | 1 - xen/arch/x86/vmx_io.c | 7 ++++--- xen/arch/x86/x86_32/entry.S | 1 + xen/arch/x86/x86_64/entry.S | 1 + xen/include/asm-x86/vmx.h | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/xen/arch/x86/vmx.c b/xen/arch/x86/vmx.c index f7c39b8346..c2647193fe 100644 --- a/xen/arch/x86/vmx.c +++ b/xen/arch/x86/vmx.c @@ -1713,7 +1713,6 @@ asmlinkage void vmx_vmexit_handler(struct cpu_user_regs regs) __vmx_bug(®s); /* should not happen */ } - vmx_intr_assist(v); return; } diff --git a/xen/arch/x86/vmx_io.c b/xen/arch/x86/vmx_io.c index cbc88deb8b..cf770f8dda 100644 --- a/xen/arch/x86/vmx_io.c +++ b/xen/arch/x86/vmx_io.c @@ -631,12 +631,14 @@ static inline int irq_masked(unsigned long eflags) return ((eflags & X86_EFLAGS_IF) == 0); } -void vmx_intr_assist(struct vcpu *v) +asmlinkage void vmx_intr_assist() { int intr_type = 0; - int highest_vector = find_highest_pending_irq(v, &intr_type); + int highest_vector; unsigned long intr_fields, eflags, interruptibility, cpu_exec_control; + struct vcpu *v = current; + highest_vector = find_highest_pending_irq(v, &intr_type); __vmread(CPU_BASED_VM_EXEC_CONTROL, &cpu_exec_control); if (highest_vector == -1) { @@ -714,7 +716,6 @@ void vmx_do_resume(struct vcpu *d) ASSERT(!test_bit(ARCH_VMX_IO_WAIT, &d->arch.arch_vmx.flags)); /* We always check for interrupts before resuming guest */ - vmx_intr_assist(d); } #endif /* CONFIG_VMX */ diff --git a/xen/arch/x86/x86_32/entry.S b/xen/arch/x86/x86_32/entry.S index a2491612d7..911594b910 100644 --- a/xen/arch/x86/x86_32/entry.S +++ b/xen/arch/x86/x86_32/entry.S @@ -140,6 +140,7 @@ ENTRY(vmx_asm_vmexit_handler) jnz 2f /* vmx_restore_all_guest */ + call vmx_intr_assist call load_cr2 .endif VMX_RESTORE_ALL_NOSEGREGS diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index 0f24b15ca1..3db22487bf 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -233,6 +233,7 @@ ENTRY(vmx_asm_vmexit_handler) jnz 2f /* vmx_restore_all_guest */ + call vmx_intr_assist call load_cr2 .endif /* diff --git a/xen/include/asm-x86/vmx.h b/xen/include/asm-x86/vmx.h index 714969eb2e..1307bbb9d0 100644 --- a/xen/include/asm-x86/vmx.h +++ b/xen/include/asm-x86/vmx.h @@ -31,7 +31,7 @@ extern void vmx_asm_vmexit_handler(struct cpu_user_regs); extern void vmx_asm_do_resume(void); extern void vmx_asm_do_launch(void); -extern void vmx_intr_assist(struct vcpu *d); +extern void vmx_intr_assist(); extern void arch_vmx_do_launch(struct vcpu *); extern void arch_vmx_do_resume(struct vcpu *); -- 2.30.2